'use strict';
//////////////////////////////////////////////////////////////////////////////
// 左边树动画
// =====================
// liuyp 2018年11月28日15: 30: 04
//////////////////////////////////////////////////////////////////////////////
function uiNav($timeout) {
    return {
        restrict: 'AC',
        link: function(scope, el, attr) {
           ////////////////////////////////////////////////////////////////
            var W = $(window),
                _mb = 768,
                wrap = $('.app-aside'), next,
                backdrop = '.dropdown-backdrop';
            // 目录节点点击
            el.on('click', 'a', function(e) {
                next && next.trigger('mouseleave.nav');
                var _this = $(this);
                _this.parent().siblings('.active').toggleClass('active');
                _this.next().is('ul') && _this.parent().toggleClass('active') && e.preventDefault();
                // mobile
                _this.next().is('ul') || ((W.width() < _mb) && $('.app-aside').removeClass('show off-screen'));
                // title
                var title = _this.find('span').html()
                if( title ) window.document.title = title + " | Xian资料库"
            });
            // 鼠标进入
            el.on('mouseenter', 'a', function(e){
                next && next.trigger('mouseleave.nav');
                $('> .nav', wrap).remove();
                if (!$('.app-aside-fixed.app-aside-folded').length || (W.width() < _mb)) return;
                var _this = $(e.target) , top , w_h = $(window).height() , offset = 50 , min = 150;
                !_this.is('a') && (_this = _this.closest('a'));
                if(_this.next().is('ul')){ next = _this.next(); }else{ return; }
                _this.parent().addClass('active');
                top = _this.parent().position().top + offset;
                next.css('top', top);
                if(top + next.height() > w_h){ next.css('bottom', 0); }
                if(top + min > w_h){ next.css('bottom', w_h - top - offset).css('top', 'auto'); }
                next.appendTo(wrap);
                next.on('mouseleave.nav', function(e){
                    $(backdrop).remove();
                    next.appendTo(_this.parent());
                    next.off('mouseleave.nav').css('top', 'auto').css('bottom', 'auto');
                    _this.parent().removeClass('active');
                });
                $('.smart').length && $('<div class="dropdown-backdrop"/>').insertAfter('.app-aside').on('click', function(next){
                    next && next.trigger('mouseleave.nav');
                });
            });
            // 鼠标离开
            wrap.on('mouseleave', function(e){
                next && next.trigger('mouseleave.nav');
                $('> .nav', wrap).remove();
            });
            // 双击editplus打开
            el.on('dblclick', '[ui-sref]', function(e) {
                if(window.location.host.indexOf('localhost') < 0) {
                    return console.error('只有本地打开才能触发EP编辑');
                }
                /* 不想公开
                // if(window.password !== 123) {
                    return console.error('\u53ea\u6709\u6b63\u786e\u5bc6\u7801\u624d\u80fd\u89e6\u53d1EP\u7f16\u8f91');
                }*/
                // 输入 ui-sref='app.producetable.table12'
                // 输出 templates/producetable/table12.controller.js
                // 输出 templates/producetable/table12.view.html
                var controllerUrl = $(this).attr('ui-sref').replace('app', 'templates').replace(/\./g, '/') + '.controller.js';
                $.ajax({
                    url: 'http://localhost:4010/epOpen',
                    data: {
                        project: 'R20.angularJs-admin-gitee',
                        path: controllerUrl
                    }
                });
                console.info('\u4f7f\u7528EP\u6253\u5f00\u6587\u4ef6:: ' + controllerUrl)
                var viewUrl = $(this).attr('ui-sref').replace('app', 'templates').replace(/\./g, '/') + '.view.html';
                $.ajax({
                    url: 'http://localhost:4010/epOpen',
                    data: {
                        project: 'R20.angularJs-admin-gitee',
                        path: viewUrl
                    }
                });
                console.info('\u4f7f\u7528EP\u6253\u5f00\u6587\u4ef6:: ' + viewUrl)
            });
            // 找机会定位选中节点
            // 不爽的实现方式
            function scrollme(){
                var x = $(el).find('.nav.nav-sub [ui-sref-active].active');
                if(scrollmeTryTime-- == 0){
                    return;
                }
                if(! x.length){
                    $timeout(scrollme,500)
                    return;
                }
                x.each(function() {
                    console.info('定位至初始节点')
                    var a = $(this).position().top;
                    var b = $(this).parent().parent().position().top;
                    $('.navi-wrap').scrollTop(parseInt(a + b));
                });
            }
            var scrollmeTryTime = 20;
            scrollme()
           ////////////////////////////////////////////////////////////////
        }
    };
}
exports = module.exports = uiNav;
